dnd: Fix gtk_drag_set_icon_surface() with translucent surfaces
authorBenjamin Otte <otte@redhat.com>
Thu, 30 Sep 2010 14:25:11 +0000 (16:25 +0200)
committerBenjamin Otte <otte@redhat.com>
Thu, 30 Sep 2010 14:25:44 +0000 (16:25 +0200)
The code for surfaces with alpha content was apparently untested and
screwed up the signs.

gtk/gtkdnd.c

index c7f470c4689f87635298259b814bf14085cef2d3..917521a5d8ece911f24d0e9534333ab63ada98f8 100644 (file)
@@ -3290,6 +3290,8 @@ gtk_drag_set_icon_surface (GdkDragContext    *context,
       cairo_t *cr;
 
       region = gdk_cairo_region_create_from_surface (surface);
+      cairo_region_translate (region, -extents.x, -extents.y);
+
       gtk_widget_shape_combine_region (window, region);
       cairo_region_destroy (region);
 
@@ -3302,7 +3304,7 @@ gtk_drag_set_icon_surface (GdkDragContext    *context,
       
       cr = cairo_create (saturated);
       cairo_push_group_with_content (cr, CAIRO_CONTENT_COLOR_ALPHA);
-      cairo_set_source_surface (cr, surface, extents.x, extents.y);
+      cairo_set_source_surface (cr, surface, -extents.x, -extents.y);
       cairo_paint (cr);
       cairo_set_operator (cr, CAIRO_OPERATOR_SATURATE);
       cairo_paint (cr);